As programmable computer processing finds its way into more and more devices, such as handheld devices, smart appliances, embedded systems, etc., efficient use of computing resources becomes more and more important. One such critical resource is memory, which must store the computer programs that control the device. Unfortunately, many computer programs, particularly those written in object oriented languages, tend to sacrifice program size for other efficiencies. While such efficiencies allow program source code to be written and implemented much quicker, the compiled program may include constructs that increase its size without providing any actual function at runtime. Accordingly, a need exists for optimization techniques that can reduce the program size of compiled object oriented programs.